/*
  Copyright (C) 2011, Kyungjoo Kim
  
  This file is part of UHM (Unassembled HyperMatrix) sparse direct solver. 
  
  All rights reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
  
  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  Also add information on how to contact you by electronic and paper mail.
  
  
  Kyungjoo Kim
  iamkyungjoo@gmail.com
*/
#ifndef UHM_UTIL_OPTION_HXX
#define UHM_UTIL_OPTION_HXX

#define UHM_OPTION_MODE_DRY 1
#define UHM_OPTION_MODE_RUN 0

namespace uhm {

  /*! Command line options
   */
  extern void set_option(Int_ argc, Char_ **argv);
  extern void option_begin();
  extern void option_end();

  extern void verbose_begin();
  extern void verbose_end();

  extern int  get_verbose();
  extern int  get_num_threads();

  extern void get_option_bool(const Char_ *opt, const Char_ *text, const Char_ *man, 
                              Bool_ def, Bool_ &val);
  extern void get_option_int (const Char_ *opt, const Char_ *text, const Char_ *man, 
                              Int_ def, Int_ &val);
  extern void get_option_double(const Char_ *opt, const Char_ *text, const Char_ *man,
                                Double_ def, Double_ &val);
  extern void get_option_string(const Char_ *opt, const Char_ *text, const Char_ *man,
                                Char_ *def, std::string &val);
}

#endif
